package es.juanc.threads.sync5;

import java.util.concurrent.TimeUnit;

public class BankManager {

	public static boolean transferencia( Cuenta origen, Cuenta destino, int cantidad ) throws InterruptedException {

		if (origen.monitor.tryLock(1, TimeUnit.SECONDS)) {
		   try {
		       if (destino.monitor.tryLock(1, TimeUnit.SECONDS)) {
		          try {
					if (origen.getSaldo() > cantidad) {
						origen.retira(cantidad);
						destino.deposita(cantidad);
						return true;
					}
				  } finally {
			    	destino.monitor.unlock();
			      }
		       }
		    } finally {
		      origen.monitor.unlock();
		    }
			return false;
		}
		return false;
	}
}
